Controlling event-driven behavior of wagering game objects

ABSTRACT

A behavior controller system and its operations are described herein. In embodiments, the operations can include detecting one or more events that occur within a wagering game. The wagering game can feature a wagering game object that can automatically (e.g., intelligently) respond to the one or more events. The behavior controller system can use event-driven behavior controllers, such as a behavior tree. The behavior controller system can determine, and activate, tasks on the behavior tree that cause the wagering game object to respond to the one or more events. In some embodiments, the behavior controller system can also prioritize tasks that may be performed by behavior trees to prevent conflicts between wagering game objects during a wagering game.

LIMITED COPYRIGHT WAIVER

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patentdisclosure, as it appears in the Patent and Trademark Office patentfiles or records, but otherwise reserves all copyright rightswhatsoever. Copyright 2009, WMS Gaming, Inc.

TECHNICAL FIELD

Embodiments of the inventive subject matter relate generally to wageringgame systems, and more particularly to devices and processes thatcontrol event-driven behavior of wagering game objects in wagering gamesystems and networks.

BACKGROUND

Wagering game machines, such as slot machines, video poker machines andthe like, have been a cornerstone of the gaming industry for severalyears. Generally, the popularity of such machines depends on thelikelihood (or perceived likelihood) of winning money at the machine andthe intrinsic entertainment value of the machine relative to otheravailable gaming options. Where the available gaming options include anumber of competing wagering game machines and the expectation ofwinning at each machine is roughly the same (or believed to be thesame), players are likely to be attracted to the most entertaining andexciting machines. Shrewd operators consequently strive to employ themost entertaining and exciting machines, features, and enhancementsavailable because such machines attract frequent play and hence increaseprofitability to the operator. Therefore, there is a continuing need forwagering game machine manufacturers to continuously develop new gamesand gaming enhancements that will attract frequent play.

BRIEF DESCRIPTION OF THE DRAWING(S)

Embodiments are illustrated in the Figures of the accompanying drawingsin which:

FIG. 1 is an illustration of controlling wagering game behavior using anevent-driven behavior controller, according to some embodiments;

FIG. 2 is an illustration of a wagering game system architecture 200,according to some embodiments;

FIG. 3 is a flow diagram 300 illustrating controlling wagering gameobjects using event-driven behavior controllers, according to someembodiments;

FIG. 4 is a flow diagram 400 illustrating storing and using groupings ofevent-driven wagering game animations, according to some embodiments;

FIG. 5 is an illustration of a wagering game system 500, according tosome embodiments;

FIG. 6 is a flow diagram 600 illustrating managing preferred wageringgame player object behaviors, according to some embodiments;

FIG. 7 is an illustration of a wagering game system 700, according tosome embodiments;

FIG. 8 is an illustration of a wagering game machine architecture 800,according to some embodiments; and

FIG. 9 is an illustration of a mobile wagering game machine 900,according to some embodiments.

DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

This description of the embodiments is divided into six sections. Thefirst section provides an introduction to embodiments. The secondsection describes example operating environments while the third sectiondescribes example operations performed by some embodiments. The fourthsection describes additional example operating environments while thefifth section describes additional example embodiments. The sixthsection presents some general comments.

Introduction

This section provides an introduction to some embodiments.

Wagering games are continuously becoming more interesting in theirfunctionality. As a result, they are also becoming more complex.Characters and other displayed objects in wagering games have tointeract with a host of other objects within the wagering gameenvironment. This leads to increased challenges in controlling andmanaging the behaviors of the all the objects' movements andinteractions within the wagering game. Some specific challenges includehaving to deal with more object interaction conflicts, more complexobject functionality, more object path congestion, greater problems withobject motion fluidity, etc. As a result, programmers are having towrite longer and more complex programs and scripts to deal with thesechallenges, which requires more programming, updating, and maintenancetime. FIG. 1, however, and other figures herein, illustrate examples,according to some embodiments, of using one or more event-driven,wagering-game-behavior controllers (“behavior controllers”) to controlbehavior of wagering game objects. The behavior controller causeswagering game objects to automatically recognize and respond todifferent events that occur within the wagering game environment. Thebehavior controller can be attached to a wagering game object, thusmaking the wagering game object its own controller, in turn makingobject activity more fluid and efficient while minimizing the amount ofprogramming needed to control interactions of separate wagering gameobjects. Because the behavior controller can be attached to a wageringgame object, and because the behavior controller gives the object someautonomy, the behavior controller may be referred to herein as“self-managing”, “object specific”, “intelligent”, etc.

FIG. 1 illustrates an example of controlling wagering game behaviorusing an event-driven behavior controller. In FIG. 1, a wagering gamesystem (“system”) 100 includes a wagering game machine 162 connected toa wagering game server 150. The wagering game machine 162 includes agame display 104 that depicts multiple wagering game objects. Thewagering game objects include a player object (e.g., the fish 106), oneor more non-player objects (e.g., the predators 108, 110), and a gameoutcome object (e.g., the coin 112). The fish 106 represents a wageringgame player's character within the game display 104. The predators 108,110, represent system generated objects (e.g., casino generated objects,server-controlled objects, non-player objects, etc.) that antagonize thefish 106 (e.g., chase it away from the coin 112, try to eat the fish106, etc.). The system 100 generates a wagering game result thatinstructs the fish 106 to either eat the coin 112 (i.e., a win result),or to not eat the coin 112 (i.e., a loss result). The fish 106 can use ahierarchical type of event-driven behavior controller, according to someembodiments. In other words, the event-driven behavior controller thatcontrols the actions of the fish 106 can have a hierarchical, or “tree”structure, as in the behavior tree 103. The behavior tree 103 includesmultiple tasks 107, 109, 111, 113, 115, 117, 119, 121, that control theresponse of the fish 106 to events that occur within the wagering game.Some events can relate to a proximity range of the fish 106. Forinstance, the fish 106 may have multiple proximity ranges 114, 116, 118,invisible to the player's view, indicating distances from the fish 106.The proximity ranges 114, 116, 118, can be labeled based on the type ofevent that occurs. For example, if a predator fish 108, 110, enters oneof the proximity ranges 114, 116, 118, the ranges may be labeled by thesystem 100 according to the degree of alarm invoked in the fish 106(e.g., a warning zone 114, a danger zone 116, a critical zone 118).Specifically, a first task 107 can produce an “aggressive” response toan invasion by the predator fish 108. The predator fish 108 may be afirst type of system-controlled object that possesses certaincharacteristics of which the behavior tree 103 is aware. As a result,the first task 107 may induce an aggressive behavior when the predatorfish 108 enters the proximity range 116, or “danger zone”. The task 107may include specific instructions that cause the fish 106 to emulate adefensive ploy, such as moving toward the predator fish 108. The task107 can also include one or more dependant, or “child” tasks 113, 115,that follow the response, or are induced by the response, indicated intask 107. For example, a child task 113 can cause the fish to becomeless aggressive, and move away from the predator fish 108 once thepredator fish enters the proximity range 118, or the “critical zone”. Onthe other hand, a second task 109 can include responses that the fishengages in when a second type of system-controlled object (i.e., thepredator fish 110) enters a proximity range. For example, if the secondpredator fish 110 enters the warning zone 114, the task 109, caninstruct the fish 106 to move away from the predator fish 110 slowly. Asecond task 109 can also have one or more child tasks (e.g., task 117),which cause the fish 106 to move away from the predator fish 110 quicklyas soon as the predator fish 110 enters the danger zone 116.

The behavior tree 103 can also include tasks that cause the fish 106 torespond to wagering game goals or objectives. For instance the coin 112can be associated with a wagering game result. The wagering game server150 can produce the wagering game result, either for the fish 106 to eatthe coin 112 or not eat the coin 112 (e.g., nearly miss the coin 112,delay long enough for another fish to eat the coin 112, run away fromthe predator fish 108, 110 until the coin 112 disappears, etc.). Thewagering game result can be a third event 124, that the system 100indicates to the behavior tree 103. The behavior tree 103 can have athird task 111 that includes a response to the third event 124. Forinstance, if the third event 124 indicates a “win”, the third task 111can include an instruction for the fish 106 to swim toward the coin 112and eat the coin 112. However, because predator fish 108, 110 are in thepath between the fish 106 and the coin 112, the behavior tree 103 alsoprocesses the first and second tasks 107, 109 according to the eventscaused by the predator fish 108, 110 as they pursue the fish 106 and/oras the fish 106 interacts with and evades the predator fish 108, 110.Consequently, the behavior tree 103 acts as a self-managing behaviorcontroller, that moves up and down the tree structure of the behaviortree according to events within the wagering game and responses inducedby the tasks (e.g., tasks 107, 109, 111, etc.) within the behavior tree103. The tasks can move up levels of the tree structure as well as downlevels, within the same level, as loops or repeating structures, etc.The behavior tree 103 can also include a starting place, such as a rootnode 105, for reference, or direction. In some embodiments, the behaviortree 103 can include specialized behavior controllers that that workwithin the behavior tree 103, such as schedulers, composite tasks,special tasks, conditions and actions, etc. The system 100 can work withother behavior controllers, (e.g., finite state machines, artificialneural networks, path finding layers, agents, etc.) that work externalto, but in conjunction with, the behavior tree 103. In some embodiments,the system 100 can utilize a simulation of a Newtonian physics model, or“physics engine”, in conjunction with behavior controllers.

Although FIG. 1 describes some embodiments, the following sectionsdescribe many other features and embodiments.

Example Operating Environments

This section describes example operating environments and networks andpresents structural aspects of some embodiments. More specifically, thissection includes discussion about wagering game system architectures.

Wagering Game System Architecture

FIG. 2 is a conceptual diagram that illustrates an example of a wageringgame system architecture 200, according to some embodiments. In FIG. 2,the wagering game system architecture 200 includes a computer 245connected to a communications network 222. Also connected to thecommunications network 222 are a wagering game machine 260, a wageringgame server 250, an account server 270, and a community server 280.

The wagering game system architecture 200 can include the account server270, which can be configured to control user related accounts accessiblevia wagering game networks and social networks. The account server 270can store and track player information, such as identifying information(e.g., avatars, screen name, account identification numbers, etc.) orother information like financial account information, social contactinformation, etc. The account server 270 can contain accounts for socialcontacts referenced by the player account. The account server 270 canalso provide auditing capabilities, according to regulatory rules, andtrack the performance of players, machines, and servers. The accountserver 270 can include an account controller 272 configured to controlinformation for a player's account. The account server 270 also caninclude an account store 274 configured to store information for aplayer's account, such as player preferences regarding player characterbehaviors. The account server 270 can connect to the community server280 via the communication network 222. A user can login to asocial-network account on the community server 280 and configure userpreferences regarding how a wagering game object can behave during awagering game. The community server 234 can connect to an account on theaccount server 270, which can store both social-network accountinformation and wagering game account information.

The wagering game system architecture 200 also can include the wageringgame server 250 configured to control wagering game content andcommunicate wagering game information, account information, and behaviorcontroller information to and from the wagering game machine 260. Thewagering game server 250 can include a content controller 251 configuredto manage and control content for the presentation of content on thewagering game machine 260. For example, the content controller 251 cangenerate game results (e.g., win/loss values), including win amounts,for games played on the wagering game machine 260. The contentcontroller 251 can communicate the game results to the wagering gamemachine 260. The content controller 251 can also generate random numbersand provide them to the wagering game machine 260 so that the wageringgame machine 260 can generate game results. The wagering game server 250also can include a content store 252 configured to contain content topresent on the wagering game machine 260. The wagering game server 250also can include an account manager 253 configured to controlinformation related to player accounts. For example, the account manager253 can communicate wager amounts, game results amounts (e.g., winamounts), bonus game amounts, etc., to the account server 270. Thewagering game server 250 also can include a communication unit 254configured to communicate information to the wagering game machine 260and to communicate with other systems, devices and networks. Thewagering game server 250 also can include a behavior controller unit 255configured to control behavior of wagering game objects within awagering game. The behavior controller unit 255 can determine eventsfrom a wagering game and cause the wagering game objects to respond tothe events. The behavior controller unit can utilize various behaviorcontrollers assigned to the wagering game object so that the object canself-manage its own actions and responses in response to events withinthe wagering game, such as by using behavior trees. The wagering gameserver 250 also can include a simulations manager 256 configured tocontrol simulations of a wagering game, sort, filter, and/or store thesimulations into groupings, and use the simulations from the groupingsin subsequent wagering games to animate a wagering game result. Thesimulations manager can work with self-managing, intelligent behaviorcontrollers, such as behavior trees, to control behaviors within thewagering game.

The wagering game system architecture 200 also can include a wageringgame machine 260 configured to present wagering games and receive andtransmit information to control event-driven behavior of wagering gameobjects. The wagering game machine 260 can include a content controller261 configured to manage and control content and presentation of contenton the wagering game machine 260. The wagering game machine 260 also caninclude a content store 262 configured to contain content to present onthe wagering game machine 260. The wagering game machine 260 also caninclude an event detector 263 configured to determine events that occurwithin a wagering game and report the events to the behavior controllerunit 255, in the wagering game server 250. The behavior controller unit255 can then generate behavior control information for wagering gameobjects and send the behavior control information to the wagering gamemachine 260, which the wagering game machine 260 can use to control thewagering game objects' responses to the events.

Each component shown in the wagering game system architecture 200 isshown as a separate and distinct element. However, some functionsperformed by one component could be performed by other components. Forexample, the server 250 can detect events that occur within a wageringgame. Furthermore, the components shown may all be contained in onedevice, but some, or all, may be included in, or performed by multipledevices on the systems and networks 222, as in the configurations shownin FIG. 2 or other configurations not shown. Furthermore, the wageringgame system architecture 200 can be implemented as software, hardware,any combination thereof, or other forms of embodiments not listed. Forexample, any of the network components (e.g., the wagering gamemachines, servers, etc.) can include hardware and machine-readable mediaincluding instructions for performing the operations described herein.Machine-readable media includes any mechanism that provides (i.e.,stores and/or transmits) information in a form readable by a machine(e.g., a wagering game machine, computer, etc.). For example, tangiblemachine-readable media includes read only memory (ROM), random accessmemory (RAM), magnetic disk storage media, optical storage media, flashmemory machines, etc. Machine-readable media also includes any mediasuitable for transmitting software over a network.

Example Operations

This section describes operations associated with some embodiments. Inthe discussion below, some flow diagrams are described with reference toblock diagrams presented herein. However, in some embodiments, theoperations can be performed by logic not described in the blockdiagrams.

In certain embodiments, the operations can be performed by executinginstructions residing on machine-readable media (e.g., software), whilein other embodiments, the operations can be performed by hardware and/orother logic (e.g., firmware). In some embodiments, the operations can beperformed in series, while in other embodiments, one or more of theoperations can be performed in parallel. Moreover, some embodiments canperform more or less than all the operations shown in any flow diagram.

FIG. 3 is a flow diagram illustrating controlling wagering game objectsusing event-driven behavior controllers, according to some embodiments.In FIG. 3, the flow 300 begins at processing block 302, where a wageringgame system (“system”) detects an event within a wagering game that awagering game object can respond to. For example, FIG. 1 illustratedexamples of detecting events in a wagering game. In FIG. 1, the system100 (e.g., the wagering game machine 162, the wagering game server 150,etc.) can include behavior controllers (e.g., a behavior tree 103, asystem agent, an event detector, etc.) that detect the events. Thesystem components (e.g., the wagering game machine 162, the wageringgame server 150, etc.) can generate the events while presenting awagering game. For example, a wagering game server can generate controlevents, wagering game result events, etc. The behavior controller candetect the events. The behavior controller can also generate additionalevents when processing responses.

The flow 300 continues at processing block 304, where the systemdetermines a task on a behavior tree that has a response to the event.In some embodiments, many events may occur simultaneously. A wageringgame object within the wagering game may detect the simultaneous eventsand need to respond to the simultaneous events. The system, therefore,may determine multiple behavioral tasks to process simultaneously. Ifthe system detects simultaneous events that pertain to the same wageringgame object, then the system can determine the priority of the eventsand process the tasks according to the priority. In determining thepriority of the events, the system can consider various factors, such asthe timing of the events, the severity of the events' impact on thewagering game object, possible interactions between the wagering gameobject and other objects, distances away from the wagering game objectthat the events occurs, the events' frequency of occurrence, arequirement to complete a wagering game outcome or goal within aspecific time period, etc. To determine the priority of the events, thesystem can refer to event priority charts, refer to past scenariosinvolving the same events, run quick simulations showing possible objectinteractions, etc. One or more behavior trees may include the ability todetermine priority of tasks. The system can then process the tasksaccording to the determined priority. For example, the system canprocess high priority tasks before processing low priority tasks. Afterprocessing high priority tasks, the system can re-evaluate low prioritytasks to see if the lower priority events still need processing (e.g.,the behavior tree(s) may process child tasks of the higher prioritytasks, where the performance of the child tasks may eliminate the needto process the lower priority tasks). If there are conflicts betweentasks, the system can resolve the conflicts by assigning priorityscores, ranking the scores, then processing the tasks according to theirpriority score rankings.

The flow 300 continues at processing block 306, where the systemactivates (e.g., runs, executes, etc.) the task. The task causes thewagering game object to perform specific actions in response to theevent. In some embodiments, the behavior tree includes a root node,which selects the particular task to run. A scheduler can execute thetask, which in turn executes one or more child tasks, and so on, untilcompleting the tasks. The behavior tree can then cause the wagering gameobject to function in an “idle” state in the absence of any events. Apriority selector can prioritize and select tasks and sub-tasks.

The flow 300 continues at processing block 308, where the systemdetermines whether a second event occurs during the performance of thefirst task's behavioral response. If another event does occur, the flow300 can return to processing block 304 and determine another task thatrelates to the event. If there is a conflict between the performances ofthe two tasks, the system can prioritize, as mentioned previously. Thesame behavior tree can include tasks that cause the wagering game objectto respond to the multiple events in the proper order. In someembodiments, the system can also utilize a second behavior tree to causeanother object to respond to the subsequent event. For example, if thewagering object is at risk of being intercepted or interfered with, thesecond object can deter the interference. If, however, there are noadditional events within the wagering game, the flow 300 can continue atprocessing block 310.

The flow 300 continues at processing block 310, where the systemdetermines whether the first task requires one or more additional tasksto activate. For instance, a task can call additional tasks (e.g.,sub-tasks, child-tasks, a task in another behavior tree, etc.). If thereare any additional tasks, then the system can return to processing block306 and activate the additional task(s). The system can prioritize andprocess the one or more additional tasks. If, however, there are no moretasks to execute, the flow 300 can end. The wagering game object canreturn to an idle state and await any additional events.

FIG. 4 is a flow diagram illustrating storing and using groupings ofevent-driven wagering game animations, according to some embodiments.FIG. 5 is a conceptual diagram that helps illustrate the flow of FIG. 4,according to some embodiments. This description will present FIG. 4 inconcert with FIG. 5. In FIG. 4, a flow 400 begins at processing block402 where a wagering game system (“system”) executes a wagering gameanimation of a wagering game result. The wagering game animation canfeature a wagering game object that performs actions animating theevents of the wagering game result. For example, in FIG. 5, the system500 can generate a wagering game animation 502 featuring a cannon ballcharacter (“cannon ball”) 504. The canon ball 504 can interact withother objects (e.g., the bird 506, the cactus 508). In the wagering gameanimation 502, the system 500 can utilize behavior controllers, such asbehavior trees 505, 507, 509, that are associated, respectively, withthe canon ball 504, the bird 506 and the cactus 508. The canon ball 504travels a path 511 to a final resting position 516 in a region thatcorrelates to one of various wagering game result values 517. Thewagering game result values 517 can be money payout values (e.g., moneyamounts, credits, etc.) that a wagering game player can receive forwinning a wagering game. A payout value, however, is only one kind ofwagering game result value. Other wagering game result values mayinclude an award value that doesn't pay money (e.g., a new connection toa social contact, a social status increase, an invitation to a wageringgame or tournament, etc.), a loss value, an activity to perform, etc.

The flow 400 continues at processing block 404, where the systemclassifies the wagering game animation into a wagering game resultgrouping. For example, in FIG. 5, the system 500 sorts and stores thewagering game animation 502 into different groupings 521 that correspondto the wagering game result values 517. In other words, if the canonball 504 lands on a region that correlates to a “loss”, then the system500 stores the animation in the “Loss Animations” grouping. The system500 can also filter the wagering game animation 502, and any subsequentwagering game animations, from the groupings 521. For instance, if somewagering game animations within the groupings 521 are less exciting(e.g., less dynamic, too slow, very few object interactions, etc.), thesystem 500 can filter them out. The system 500 can filter the groupings521 based on different factors that relate to the dynamics of theanimations (e.g., a number of interactions the cannon ball 504 has withother objects, a duration the cannon ball 504 is in motion, a number ofbounces or changes of direction by the cannon ball 504, a negative or“backward” distance the cannon ball 504 travels, specific types ofobject the cannon ball 504 hits, a number of tasks processed by thebehavior trees 505, 507, 509, etc.). In some embodiments, the cannonball 504, or other player characters, can interact with objects toinduce additional games, activities, etc. For example, the cannon ball504 may hit the bird 506, and system 500 can present a bonus game, abonus prize, additional game play, tasks to perform, etc. The system 100can add winnings from a bonus game or activity to winnings for theoriginal game. In some embodiments, the additional activities may affectthe original game's wagering game result value (e.g., the additionalactivity adds thrust to the cannon ball 504 to alter the trajectory ofthe cannon ball 504, the additional activity moves the final restingposition 516 of the cannon ball 504, etc.). In some embodiments, thegroupings 521 that correspond to the wagering game result values 517 canbe related to objectives achieved by the player's game character otherthan, or in addition to, a final resting position. For example, awagering game's payout value may be tied to a number of items with whicha wagering game character interacts (e.g., a number of items thewagering game character collects, hits, etc.). Thus, the groupings 521can be based on the number of interactions that the wagering gamecharacter experiences during the wagering game.

The flow 400 continues at processing block 406, where the system usesthe wagering game animation in a wagering game. For example, in FIG. 5,the wagering game server 550 can generate, sort, filter, and store theanimation 502 before the wagering game machine 562 runs the animationduring a wagering game. During the wagering game, the wagering gameserver 550 can generate a random wagering game result (e.g., a win),resulting in a payout value (e.g., $10). The system 500 can then selectan animation from one of the groupings 521 that correlates to the payoutvalue (e.g., select, from the “$10 Animations” grouping, an animation ofthe player objects obtaining a $10 payout). The wagering game machine562 can then present the selected animation, demonstrating the wageringgame outcome. In other embodiments, however, the wagering game machine562 can generate the animation 502 during a wagering game and thewagering game server 550 can sort, filter, and store it for future usein other wagering games.

FIG. 6 is a flow diagram illustrating managing preferred wagering gameplayer object behaviors, according to some embodiments. FIG. 7 is aconceptual diagram that helps illustrate the flow of FIG. 6, accordingto some embodiments. This description will present FIG. 6 in concertwith FIG. 7. In FIG. 6, a flow 600 begins at processing block 602, wherea wagering game system (“system”) presents a graphical user interface(GUI) that provides access to a wagering game account. For example, inFIG. 7, a computer 745 presents a GUI 702. The GUI 702 provides accessto a wagering game account 703. The wagering game account 703 can belongto a wagering game player (e.g., Mark Price). The wagering game player(“player”) can access the wagering game account 703 from the computer745 (e.g., a home computer, a personal digital assistant, a mobiledevice, etc.), while away from the casino network. While within thecasino network, the player can access the wagering game account eitheron the computer 745, a wagering game machine 762, a casino terminal orkiosk, etc. The wagering game account 703 can be stored on a wageringgame server 750 (and/or on other servers not shown, like an accountserver) accessible via a communications network 722.

Returning now to FIG. 6, the flow 600 continues at processing block 604,where the system stores player preferences in the wagering game accountrelated to a wagering game object's behavior. The player preferenceshave settings that are related to behaviors a wagering game object canperform during a wagering game. The wagering game object can be a gameobject that represents the player (i.e., a “player” object, like thecanon ball 504 in FIG. 5, or the fish 106 in FIG. 1), and/or that theplayer can control, during the wagering game. For example, in FIG. 7,the GUI 702 includes a panel 704 with various settings related to awagering game character 706 (e.g., a fish avatar). The wagering gamecharacter (“character”) 706 can have certain personality traits, orcharacteristics, that dictate how the character 706 will respond toevents during a wagering game. The panel 704 can present characteristicsettings 708, that the player can select. The characteristic settings708 may not necessarily indicate specific actions that the character 706will perform during the wagering game, but may instead present settingsrelated to the general characteristics of the character. The settingscan be in the form of general moods (e.g., grumpy, happy aggressive),personality types (e.g., outgoing, shy, nerdy), character types (e.g., afish, a robot, a warrior), professions (e.g., lawyer, engineer,construction worker), etc. The system 700 can determine the specificactions that the character can perform based on the characteristicsettings 708. On the other hand, the system 700 can also present actionsettings 709, which convey specific events that may occur within awagering game, as well as specific reactions that the character 706 canhave to the events. The system 700 can use the action settings 709 toperform specific actions during the wagering game. For example, thesystem 700 can present action settings 709 that control the speed of thecharacter 706. The system 700 can use the action to also affect thepayout of the wagering game. For instance, if the player preference isfor a slower moving character 706, the system 700 may adjust wageringgame payouts to be fewer in frequency, but higher in payout value.

Returning again to FIG. 6, the flow 600 continues at processing block606, where the system determines a behavior tree that correlates to theplayer preferences, and assigns the behavior tree to the wagering gameaccount. The system can determine the behavior tree by generating thebehavior tree based on the settings, or by selecting a pre-existingbehavior tree that matches the settings. The system then associates thebehavior tree with the wagering game account so that when the playerlogs in to a wagering game session, the system can use the behavior treeduring the wagering game session to control the player's character(s).In some embodiments, the system can also store the settings into aconfiguration file that the system can use to generate the behaviors orto create the behavior tree. The player can store the configurationfile, such as on a player identification card, and upload it to awagering game server before a wagering game session. The wagering gameserver can then construct a behavior tree for the player's character,even if the wagering game server cannot access the player's account. InFIG. 7, the system 700 generates the behavior tree 710 from the playerpreference settings and stores the behavior tree 710 on the wageringgame server 750.

The flow 600 continues, at processing block 608, where the system awardscharacteristics as a reward for wagering game play, and updates thebehavior tree. For example, the system can award abilities (e.g., superspeed), appearances (e.g., clothing, facial expressions), items (e.g.,sunglasses, a metal detector, etc.) and so forth. The system can awardthe characteristics based on various factors, such as how much money aplayer has spent on a wagering game, what level a player has attained ona wagering game, a specific number of wagering game events, etc. Thesystem can automatically assign the characteristics to the wagering gamecharacter by adding new branches to the behavior tree and/or enablingaccess to parts of the behavior tree that previously weren't available.In some embodiments, the system can instead present the obtainedcharacteristics to the player via the graphical user interface (e.g.,GUI 702 in FIG. 7). The player can then select which abilities theplayer prefers. The system can then update the behavior tree (e.g.,behavior tree 710) with the newly selected characteristics.

Additional Example Embodiments

According to some embodiments, a wagering game system (“system”) canprovide various example devices, operations, etc., to controlevent-driven behavior of wagering game objects. The followingnon-exhaustive list enumerates some possible embodiments.

-   -   The system can monitor multiple events in a casino network. The        system can use a network agent to track multiple events across        wagering games, bonus games, progressive games, etc. using        behavior controllers. The system can prevent wagering game        objects from interfering excessively and can assist wagering        game objects to obtain wagering game outcomes within specified        time periods.    -   The system can monitor multiple behavior trees and coordinate        behaviors.    -   The system can simulate responses by a plurality of wagering        game objects, before the objects perform their behaviors. The        system can analyze the simulations and assist behavior        controllers to enact responses to events.    -   The system can generate non-player characters (e.g.,        “house-generated” fish) to cause anticipation, interference,        etc. The system can control those non-player objects using        behavior controllers. For instance, those non-player characters        can move player characters along a path, direct it, etc.    -   The system can parameterize the behaviors in a behavior tree        with time restraints. For example, the system can use reverse        behaviors (with system generated artificial intelligence) to        generate motives, (e.g., system controlled shark to chase a fish        to make the fish's behavior more believable, a system controlled        crab to push a ball around with bubbles, etc.) In other words,        the system can change the environment with computer characters        to control behavior. The system can also use agents with certain        objects to add control properties to the wagering game.    -   The system can use a behavior controller (e.g., a behavior tree        decorator) to check non-volatile random access memory (NVRAM),        force a state, etc.    -   The system can be managed with a tool that can draw a behavior        tree and generate the behavior tree with the tool instead of        scripting the behavior tree.    -   The system can determine multiple points of contact, fluid        dragging/swiping and some 3D capabilities including some forms        of physics representation. The multiple points of contact, fluid        dragging, etc. may be integrated as inputs to behavior trees.        For example, dragging a mouse, making hand gestures on a screen,        etc., may be used to generate specific types of movements that a        character can make. The system can capture the hand movements        and add the corresponding movements into the character's        behavior tree. For example, in FIG. 7, the panel 704 may include        a “character training” section, where the player can train the        character to perform certain behaviors.    -   The system can present a team challenge game where players        direct their characters (e.g., fish) via hand gestures. Players        of a team work together to win by directing their characters to        block other team's characters and to achieve game objectives        (e.g., eat coins). In some embodiments, the system can capture        strategic movements or patterns of movement made by a player's        hand movements, during the game, and add them to their        character's behavior tree as a learned behavior. In some        embodiments, the hand gestures can alter a character's behavior        during the wagering game, such as by stroking a character to        calm it down, thus causing the system to utilize a portion of        the behavior tree that relates to calm behavior.    -   The system can present an antagonistic object (e.g., like a “hot        potato”) that purposefully interferes with a wagering game        and/or affects the outcome of the game. The system can present        the antagonistic object in a group game scenario and the        wagering game player can force the object onto another player's        playing surface to avoid the object's interaction. The        antagonistic object can lay dormant, and activate at random,        causing a player to lose. The player's interaction with the        antagonistic object, and the antagonistic object's reaction, can        be manipulated by behavior controllers. During the game,        player's can attempt to achieve other goals, like play a hand of        cards (e.g., blackjack), spin a reel, etc. The system can        utilize achieved goals to generate groupings of animations for        further game play, such as the groupings 521 described in FIG.        5.

Additional Example Operating Environments

This section describes example operating environments, systems andnetworks, and presents structural aspects of some embodiments.

Wagering Game Machine Architecture

FIG. 8 is a conceptual diagram that illustrates an example of a wageringgame machine architecture 800, according to some embodiments. In FIG. 8,the wagering game machine architecture 800 includes a wagering gamemachine 806, which includes a central processing unit (CPU) 826connected to main memory 828. The CPU 826 can include any suitableprocessor, such as an Intel® Pentium processor, Intel® Core 2 Duoprocessor, AMD Opteron™ processor, or UltraSPARC processor. The mainmemory 828 includes a wagering game unit 832. In some embodiments, thewagering game unit 832 can present wagering games, such as video poker,video black jack, video slots, video lottery, reel slots, etc., in wholeor part.

The CPU 826 is also connected to an input/output (“I/O”) bus 822, whichcan include any suitable bus technologies, such as an AGTL+ frontsidebus and a PCI backside bus. The I/O bus 822 is connected to a payoutmechanism 808, primary display 810, secondary display 812, value inputdevice 814, player input device 816, information reader 818, and storageunit 830. The player input device 816 can include the value input device814 to the extent the player input device 816 is used to place wagers.The I/O bus 822 is also connected to an external system interface 824,which is connected to external systems 804 (e.g., wagering gamenetworks). The external system interface 824 can include logic forexchanging information over wired and wireless networks (e.g., 802.11gtransceiver, Bluetooth transceiver, Ethernet transceiver, etc.)

The I/O bus 822 is also connected to a location unit 838. The locationunit 838 can create player information that indicates the wagering gamemachine's location/movements in a casino. In some embodiments, thelocation unit 838 includes a global positioning system (GPS) receiverthat can determine the wagering game machine's location using GPSsatellites. In other embodiments, the location unit 838 can include aradio frequency identification (RFID) tag that can determine thewagering game machine's location using RFID readers positionedthroughout a casino. Some embodiments can use GPS receiver and RFID tagsin combination, while other embodiments can use other suitable methodsfor determining the wagering game machine's location. Although not shownin FIG. 8, in some embodiments, the location unit 838 is not connectedto the I/O bus 822.

In some embodiments, the wagering game machine 806 can includeadditional peripheral devices and/or more than one of each componentshown in FIG. 8. For example, in some embodiments, the wagering gamemachine 806 can include multiple external system interfaces 824 and/ormultiple CPUs 826. In some embodiments, any of the components can beintegrated or subdivided.

In some embodiments, the wagering game machine 806 includes a behaviorcontroller module 837. The behavior controller module 837 can processcommunications, commands, or other information, where the processing cancontrol event-driven behavior of wagering game objects.

Furthermore, any component of the wagering game machine 806 can includehardware, firmware, and/or machine-readable media including instructionsfor performing the operations described herein.

Mobile Wagering Game Machine

FIG. 9 is a conceptual diagram that illustrates an example of a mobilewagering game machine 900, according to some embodiments. In FIG. 9, themobile wagering game machine 900 includes a housing 902 for containinginternal hardware and/or software such as that described above vis-à-visFIG. 8. In some embodiments, the housing has a form factor similar to atablet PC, while other embodiments have different form factors. Forexample, the mobile wagering game machine 900 can exhibit smaller formfactors, similar to those associated with personal digital assistants.In some embodiments, a handle 904 is attached to the housing 902.Additionally, the housing can store a foldout stand 910, which can holdthe mobile wagering game machine 900 upright or semi-upright on a tableor other flat surface.

The mobile wagering game machine 900 includes several input/outputdevices. In particular, the mobile wagering game machine 900 includesbuttons 920, audio jack 908, speaker 914, display 916, biometric device906, wireless transmission devices 912 and 924, microphone 918, and cardreader 922. Additionally, the mobile wagering game machine can includetilt, orientation, ambient light, or other environmental sensors.

In some embodiments, the mobile wagering game machine 900 uses thebiometric device 906 for authenticating players, whereas it uses thedisplay 916 and speakers 914 for presenting wagering game results andother information (e.g., credits, progressive jackpots, etc.) The mobilewagering game machine 900 can also present audio through the audio jack908 or through a wireless link such as Bluetooth.

In some embodiments, the wireless communication unit 912 can includeinfrared wireless communications technology for receiving wagering gamecontent while docked in a wager gaming station. The wirelesscommunication unit 924 can include an 802.11G transceiver for connectingto and exchanging information with wireless access points. The wirelesscommunication unit 924 can include a Bluetooth transceiver forexchanging information with other Bluetooth enabled devices.

In some embodiments, the mobile wagering game machine 900 is constructedfrom damage resistant materials, such as polymer plastics. Portions ofthe mobile wagering game machine 900 can be constructed from non-porousplastics which exhibit antimicrobial qualities. Also, the mobilewagering game machine 900 can be liquid resistant for easy cleaning andsanitization.

In some embodiments, the mobile wagering game machine 900 can alsoinclude an input/output (“I/O”) port 930 for connecting directly toanother device, such as to a peripheral device, a secondary mobilemachine, etc. Furthermore, any component of the mobile wagering gamemachine 900 can include hardware, firmware, and/or machine-readablemedia including instructions for performing the operations describedherein.

The described embodiments may be provided as a computer program product,or software, that may include a machine-readable medium having storedthereon instructions, which may be used to program a computer system (orother electronic device(s)) to perform a process according toembodiments(s), whether presently described or not, because everyconceivable variation is not enumerated herein. A machine readablemedium includes any mechanism for storing or transmitting information ina form (e.g., software, processing application) readable by a machine(e.g., a computer). The machine-readable medium may include, but is notlimited to, magnetic storage medium (e.g., floppy diskette); opticalstorage medium (e.g., CD-ROM); magneto-optical storage medium; read onlymemory (ROM); random access memory (RAM); erasable programmable memory(e.g., EPROM and EEPROM); flash memory; or other types of mediumsuitable for storing electronic instructions. In addition, embodimentsmay be embodied in an electrical, optical, acoustical or other form ofpropagated signal (e.g., carrier waves, infrared signals, digitalsignals, etc.), or wireline, wireless, or other communications medium.

General

This detailed description refers to specific examples in the drawingsand illustrations. These examples are described in sufficient detail toenable those skilled in the art to practice the inventive subjectmatter. These examples also serve to illustrate how the inventivesubject matter can be applied to various purposes or embodiments. Otherembodiments are included within the inventive subject matter, aslogical, mechanical, electrical, and other changes can be made to theexample embodiments described herein. Features of various embodimentsdescribed herein, however essential to the example embodiments in whichthey are incorporated, do not limit the inventive subject matter as awhole, and any reference to the invention, its elements, operation, andapplication are not limiting as a whole, but serve only to define theseexample embodiments. This detailed description does not, therefore,limit embodiments, which are defined only by the appended claims. Eachof the embodiments described herein are contemplated as falling withinthe inventive subject matter, which is set forth in the followingclaims.

1. A method, comprising: detecting a first event that occurs within awagering game, wherein the wagering game includes a wagering game objectincluding logic for automatically responding to the first event;determining a first behavioral task on a behavior tree that causes thewagering game object to have a first behavioral response to the firstevent; and causing, by activating the first behavioral task, thewagering game object to perform the first behavioral response.
 2. Themethod of claim 1, wherein the behavior tree is assigned to the wageringgame object, and wherein the wagering game object automaticallyactivates the first behavior task in response to the first event.
 3. Themethod of claim 1, further comprising: determining a second event;determining a second behavioral task that causes the wagering gameobject to have a second behavioral response to the first event;determining a priority for the first and second behavioral tasks; andexecuting the first and second behavioral responses according to thepriority.
 4. The method of claim 1, wherein determining a priority forthe first and second behavioral tasks comprises analyzing one or more ofa timing of the first and second events, a severity of interferencecaused by the first and second events, possible interactions between thewagering game object and other objects, distances away from the wageringgame object that the first and second events occur, a frequency ofoccurrence of the first and second events, and a requirement to completea wagering game outcome within a specific time period.
 5. The method ofclaim 1, wherein the first event is a control statement withinstructions to perform a wagering game outcome, and the first behaviortask causes the wagering game object to perform the wagering gameoutcome.
 6. The method of claim 1, further comprising: determining oneor more child tasks belonging to the first behavior task; and executingthe one or more child tasks in succession.
 7. One or moremachine-readable media having instructions stored thereon, which whenexecuted by a set of one or more processors causes the set of one ormore processors to perform operations comprising: recording behavioralresponses by a wagering game object to one or more events in a wageringgame animation, wherein the behavioral responses cause the wagering gameobject to interact with other objects within the wagering game animationuntil obtaining a wagering game objective; associating the wagering gameobjective with a first wagering game result value; sorting the wageringgame animation according to the first wagering game result value; andstoring the wagering game animation in a wagering game result groupingaccording to the sorting.
 8. The machine-readable media of claim 7,wherein the behavioral responses are produced by behavioral tasks of abehavior tree associated with the wagering game object.
 9. Themachine-readable media of claim 7, further comprising: determining afilter criteria related to any one or more of a number of interactionsthe wagering game object has with the other objects, a duration of timethe wagering game object is in motion, a number changes in direction bythe wagering game object, a negative distance traveled by the wageringgame object, a specific type of other object that the wagering gameobject interacts with, and a number of behavioral responses performed bythe wagering game object; and filtering the wagering game resultgrouping according to the filter criteria.
 10. The machine-readablemedia of claim 7, wherein the wagering game objective correlates to afinal resting position of the wagering game object within the wageringgame animation, and wherein the final resting position correlates to apayout value for the wagering game animation.
 11. The machine-readablemedia of claim 7, further comprising: determining a wagering game thathas a second wagering game result value equal to the first wagering gameresult value; accessing the wagering game result grouping thatcorrelates to the first and second wagering game result values; andpresenting the wagering game animation within the wagering game.
 12. Asystem, comprising: a wagering game machine comprising an event detectorconfigured to detect one or more events that occur within a wageringgame, wherein the wagering game includes a wagering game object that canrespond to the one or more events; and a wagering game server comprisinga behavior controller unit configured to determine one or more tasksthat have behavioral responses to the one or more events; determine apriority for the one or more tasks; and activate the one or more tasksaccording to the priority, causing the object to perform the behavioralresponses in succession according to the priority.
 13. The system ofclaim 12, wherein the one or more tasks are in a behavior tree assignedto the wagering game object, and wherein the wagering game objectautomatically activates the one or more tasks.
 14. The system of claim12, wherein the behavior controller unit is further configured toanalyze one or more of timing of the one or more events, a severity ofinterference caused by the one or more events, possible interactionsbetween the wagering game object and other objects within the wageringgame, distances away from the wagering game object that the one or moreevents occur, a frequency of occurrence of the one or more events, arequirement to complete a wagering game outcome within a specific timeperiod, a hand gesture that interacts with a wagering game object, andgroup interactions with an antagonistic wagering game object.
 15. Thesystem of claim 12, further comprising an account server configured to:present a graphical user interface that provides access to a wageringgame account; store player preferences in the wagering game accountrelated to characteristics of the wagering game object; determine abehavior tree that correlates to the player preferences; and associatethe behavior tree to the wagering game account.
 16. The system of claim12, wherein the behavior controller unit is further configured to:record the behavioral responses by the wagering game object to the oneor more events in a wagering game animation; sort the wagering gameanimation according to a wagering game result value; store the wageringgame animation in a wagering game result grouping according to thesorting; and use the wagering game animation during another wageringgame that produces the wagering game result value.
 17. An apparatus,comprising: a processor; a simulations manager configured to monitor aplurality of wagering game objects, determine one or more events that awagering game object can respond to during a wagering game, determinebehavior tree tasks that the plurality of wagering game objects canperform in response to the one or more events, process the behavior treetasks in a simulation to predict the behaviors of the wagering gameobjects, and determine one or more conflicts that occur between thewagering game objects within the simulation; and a behavior controllerunit configured to control the wagering game objects within the wageringgame to prevent the one or more conflicts.
 18. The apparatus of claim17, wherein the behavioral controller unit is further configured todetermine a schedule for processing the one or more tasks; and processthe behavior tree tasks in the wagering game according to the scheduleto prevent the one or more conflicts.
 19. The apparatus of claim 18,further comprising a content controller configured to generate awagering game result objective, wherein the behavior controller unit isfurther configured to process the behavior tree tasks to obtain thewagering game result objective according to the schedule.
 20. Theapparatus of claim 17, wherein the behavior controller unit is furtherconfigured to process one or more behavioral tree tasks for non-playerwagering game objects in the wagering game to induce behavior for playerwagering game objects.
 21. An apparatus, comprising: means forpresenting a graphical user interface that provides access to a wageringgame account; means for storing player preferences in the wagering gameaccount related to characteristics of the wagering game object; meansfor determining a behavior tree that correlates to the playerpreferences; and means for associating the behavior tree to the wageringgame account.
 22. The apparatus of claim 21, wherein the means forpresenting a graphical user interface for storing player preferences,further comprises: means for presenting settings related any one or moreof wagering game object behaviors, personality types, possible eventsthat occur during a wagering game, and potential responses to eventsthat occur during a wagering game.
 23. The apparatus of claim 21,wherein the means for determining a behavior tree comprises any one ormore of generating a behavior tree that can respond to events in awagering game according to the player preferences and assigning apre-existing behavior tree that can respond to events in a wagering gameaccording to the player preferences.
 24. The apparatus of claim 21,further comprising: means for awarding one or more additionalcharacteristics for the wagering game object based on wagering gameplay; and means for associating the one or more additionalcharacteristics with the behavior tree.
 25. The apparatus of claim 24,further comprising: means for presenting the one or more additionalcharacteristics in the graphical user interface; means for determining aselection of the one or more additional characteristics; and means forassociating selections of the one or more additional characteristicswith the behavior tree.